package cn.dankal.basiclib.api;

import java.util.Map;

import cn.dankal.annotations.ApiFactory;
import cn.dankal.business.pojo.FgResponse;
import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Date: 2018/7/27.
 * Time: 17:44
 * classDescription:
 * 飞歌那边的用户接口
 * @author fred
 */

@ApiFactory(value = FgBaseApi.class)
public interface FgUserService {

    /**
     * 获取邮箱验证码
     *
     * @param email
     * @return
     */
/*    @POST("user/sms/sendCodeToEmail")
    @FormUrlEncoded
    Observable<FgResponse> obtainEmailCode(@Field("email") String email);*/

  /*  *//**
     * 发送手机验证码
     *//*
    @POST("user/sms/sendCodeToPhone")
    Observable<FgResponse> obtainVerifyCode(@Body Map<String,String> map);
*/
 /*   *//**
     * 检查手机验证码
     *//*
    @POST("user/sms/validationCode")
    Observable<FgResponse> verifyCode(@Field("phone") String mobile,
                                      @Field("code") String code);

    *//**
     * 检查邮箱验证码
     *
     * @param email
     * @param code
     * @return
     *//*
    @POST("user/sms/validationEmailCode")
    Observable<FgResponse> validationEmailCode(@Field("email") String email,
                                               @Field("code") String code);
*/

    /**
     * 检查是否需要跳过注册
     *
     * @return
/*     *//*
    @POST("user/registerSkip")
    Observable<FgResponse<RegisterSkip>> registerSkip(@Body Map<String,String> map);*/


  /*  *//**
     * 判断电话号码、用户名、邮箱是否存在,（注意：邮箱、电话、用户名每次只能填之一不能同时填）
     * 好像跟上面这个一样的呢
     * @param phone
     * @return
     *//*
    @POST("user/phoneOremailOruserNameIsExist")

    Observable<FgResponse<CheckAccountExist>> isAccountExist(
            @Field("phone") String phone,@Field("userName")String userName);


    *//**
     * 修改密码
     *
     * @param userId
     * @return
     *//*
    @POST("user/modifyPassword")
    Observable<FgResponse> modifyPassword(@Field("confirmPassword") String confirmPassword,
                                           @Field("newPassword") String newPassword,
                                           @Field("oldPassword") String oldPassword,
                                           @Field("userId") String userId);

    */

    /**
     * 注册
     * @return
     */
   /* @POST("user/submitRegistered")

    Observable<FgResponse<UserResponseBody.TokenBean>> submitRegistered(@Body Map<String,String> map);*/


    /**
     * 登录
     */
//    @POST("user/login")
//    Observable<FgResponse<UserResponseBody.TokenBean>> login(@Body Map<String,String> map);

    /**
     * 获取用户信息
     *
     * @return
     */
/*
    @GET("user/getUserInfo")
    Observable<FgResponse<UserInfoBean>> getUserInfo(@Query("token") String token, @Query("language") String language);
*/

    /**
     * 退出登录
     *
     * @return
     */
    @GET("user/logout")
    Observable<String> logout(@Query("token") String token);


  /*  *//**
     * 更改手机号码
     *//*
    @POST("user/modifyPhoneById")

    Observable<FgResponse> modifyPhoneById(@Field("newphone") String newphone,
                                           @Field("token") String toke,
                                           @Field("userId") String userId);*/

  /*  *//**
     * 更改邮箱
     *//*
    @POST("user/modifyEmailById")

    Observable<FgResponse> modifyEmailById(@Field("newEmail") String newEmail,
                                           @Field("token") String toke,
                                           @Field("userId") String userId);
*/

    /**
     * 重置密码/好像是跟修改密码功能一样的吧
     *
     * @return
     */
    @POST("user/resetPassword")
    @FormUrlEncoded
    Observable<FgResponse> resetPassword(@Field("phone") String phone,
                                         @Field("password") String password,
                                         @Field("rePassword") String rePassword);


    /**
     * 修改用户
     * address	String	No	出生地址
     * birthday	String	No	生日：时间戳
     * email	String	No	邮箱
     * id	String	Yes	用户id
     * language	String	No	语言
     * mobile	String	No	手机号
     * qq	String	No	Qq
     * remark	String	No	备注
     * sex	String	No	性别
     * sina	String	No	新浪邮箱
     * token	String	No	Token
     * userName	String	No	用户名
     *
     * @param map
     * @return FgResponse
     */
  /*  @POST("user/updateUserMsg")

    Observable<FgResponse> updateUserMsg(@Body Map<String, String> map);
*/
    /**
     * 上传图片
     * @param file
     * @return
     */
/*
    @Multipart
    @POST("user/uploadUserHeahImag")
    Observable<FgResponse<AvatarBean>> uploadUserHeahImag(@Part MultipartBody.Part file);

*/



}
